#ifndef __DELAY_H
#define __DELAY_H
#include "inttypes.h"
//////////////////////////////////////////////////////////////////////////////////
// 本程序只供学习使用，未经作者许可，不得用于其它任何用途
// ALIENTEK STM32开发板
// 使用SysTick的普通计数模式对延迟进行管理（适合STM32F10x系列）
// 包括delay_us,delay_ms
// 正点原子@ALIENTEK
// 技术论坛:www.openedv.com
// 创建日期:2010/1/1
// 版本：V1.8
// 版权所有，盗版必究。
// Copyright(C) 广州市星翼电子科技有限公司 2009-2019
// All rights reserved
//********************************************************************************
// V1.2修改说明
// 修正了中断中调用出现死循环的错误
// 防止延时不准确,采用do while结构!
// V1.3修改说明
// 增加了对UCOSII延时的支持.
// 如果使用ucosII,delay_init会自动设置SYSTICK的值,使之与ucos的TICKS_PER_SEC对应.
// delay_ms和delay_us也进行了针对ucos的改造.
// delay_us可以在ucos下使用,而且准确度很高,更重要的是没有占用额外的定时器.
// delay_ms在ucos下,可以当成OSTimeDly来用,在未启动ucos时,它采用delay_us实现,从而准确延时
// 可以用来初始化外设,在启动了ucos之后delay_ms根据延时的长短,选择OSTimeDly实现或者delay_us实现.
// V1.4修改说明 20110929
// 修改了使用ucos,但是ucos未启动的时候,delay_ms中中断无法响应的bug.
// V1.5修改说明 20120902
// 在delay_us加入ucos上锁，防止由于ucos打断delay_us的执行，可能导致的延时不准。
// V1.6修改说明 20150109
// 在delay_ms加入OSLockNesting判断。
// V1.7修改说明 20150319
// 修改OS支持方式,以支持任意OS(不限于UCOSII和UCOSIII,理论上任意OS都可以支持)
// 添加:delay_osrunning/delay_ostickspersec/delay_osintnesting三个宏定义
// 添加:delay_osschedlock/delay_osschedunlock/delay_ostimedly三个函数
// V1.8修改说明 20150519
// 修正UCOSIII支持时的2个bug：
// delay_tickspersec改为：delay_ostickspersec
// delay_intnesting改为：delay_osintnesting
//////////////////////////////////////////////////////////////////////////////////

void delay_init(uint8_t SYSCLK);
void delay_ms(uint16_t nms);
void delay_us(uint32_t nus);

#endif
